[Linux]02 大数据常用命令 二

文件、用户组等内容命令

Posted by 李玉坤 on 2018-02-19

查看文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
cat 文件内容一下子全部显示
more 文件内容一页一页的往下翻,按空格键往下,回退不了,按q退出
less 文件内容 往下 往上 按上下箭头的按键 按q键退出

对于配置文件、内容较少的文件 建议使用 cat more less

对于log日志 内容较多
实时查看
tail -f xxx.log
tail -F xxx.log 【-F 相当于 -f + --retry】
flume exec source 切记使用 -F 不要使用-f

--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“--follow=name”连用;
-c<N>或--bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;

xxx.log log4j代码项目 配置输出的日志
规则: xxx.log 保留10份 100M

aaa-->xxx.log 99m
xxx.log 100m

mv xxx.log xxx.log1
touch xxx.log 空文件

当ERROR 如何定位

a.文件内容很小 几十兆,上传给window,用editplus工具打开
上传下载 yum install -y lrzsz

b.文件内容很大 几百兆 2G
cat xxx.log | grep ERROR

| 管道符 将管道符之前的命令输出结果作为管道符之后的输入
grep过滤

ERROR上下文不清楚;如何定位上下文内容

cat xxx.log | grep -A 10 ERROR 后10行
cat xxx.log | grep -B 10 ERROR 前10行
cat xxx.log | grep -C 30 ERROR 前后各30行 经常用 迅速定位ERROR上下文

tail -300f messages 实时查看倒数300行文件
tail -300F messages 不能这样写
#会报错
[hadoop@hadoop ~]$ tail -300F derby.log
tail: 在未定义环境中的无效选项 -- 3

echo 打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[hadoop@hadoop ~]$ echo "test"
test

echo hello B > tmp.txt # 覆盖
echo hello C >> tmp.txt # 追加

环境变量名称 $PATH
[hadoop@hadoop ~]$ echo $PATH
/home/hadoop/app/jdk1.8.0_201/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/netcat/bin:/home/hadoop/.local/bin:/home/hadoop/bin

系统默认在使用各种命令的时候 会去$PATH找 找到第一个包含命令的目录就返回

#which命令用于查找并显示给定命令的绝对路径
[hadoop@hadoop ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls

环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
全局: /etc/profile    所有人都使用
个人: ~/.bash_profile
~/.bashrc 个人 不给其他人

生效文件: source xxxx
. ~/.bashrc 【点空格 生效环境变量】


环境变量是指的什么
K=V 前后不能有空格
使用时 $K

vi【vim】 /etc/profile
a. 上下键 移动光标
b. 按 i键insert 进入 编辑模式
c. 开始编辑
d. 按 esc键退出 编辑模式,进入命令行模式
e. 按 shift+: 键,进入尾行模式
f. 输入 wq 保存退出

别名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[hadoop@hadoop ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

作用就是简化我们自己的操作
alias k='cd /home/hadoop'

输入k就会执行cd /home/hadoop命令
[hadoop@hadoop ~]$ alias k='cd /home/hadoop'
[hadoop@hadoop ~]$ cd /
[hadoop@hadoop /]$ k
[hadoop@hadoop ~]$

可以进行别名文件编辑
.bash_profile ssh bug
.bashrc 个人环境变量文件 优先 ssh的时候会优先加载个人环境变量文件

[hadoop@hadoop ~]$ vim .bashrc


# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
#env
alias k='cd /home/hadoop'

[hadoop@hadoop ~]$ source .bashrc
这样重新打开会话都可以使用k命令了

history 可以查看历史使用过的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
history -c 清空

直连
跳板机 没有关系 A--》B 没有web界面的 可视化的
堡垒机 log文件 记录 xxx A--》B web界面的 可视化的 审计

[hadoop@hadoop ~]$ history
58 ll
59 cd elasticsearch-6.6.2/
60 ll
61 ./bin/elasticsearch
62 elasticsearch
63 jps
64 elasticsearch

[hadoop@hadoop ~]$ !58 执行历史指定的命令即执行ll命令

[hadoop@hadoop ~]$ ll -a
-rw-------. 1 hadoop hadoop 17918 1119 10:45 .bash_history
[hadoop@hadoop ~]$ more .bash_history #可以看到hadoop用户所有的命令
[hadoop@hadoop ~]$ cat /dev/null > .bash_history # 清空历史记录
[hadoop@hadoop ~]$ more .bash_history # 查看没有
[hadoop@hadoop ~]$
[hadoop@hadoop ~]$ history #查看时还有的
58 ll
59 cd elasticsearch-6.6.2/
60 ll
61 ./bin/elasticsearch
62 elasticsearch
63 jps
64 elasticsearch
[hadoop@hadoop ~]$ history -c #彻底清空了历史记录
[hadoop@hadoop ~]$ history #查看;确实清空了
65 history
[hadoop@hadoop ~]$

如果公司新给了一台机器;先history 看看这个账号之前做过哪些操作 有可能发现意外操作,比如【password】

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
生成文件的三种方式: touch xxx.log
cat /dev/null > xxx.log
vi命令 也会生成新文件

创建文件夹: mkdir

rm -f XXX.log 11.log 直接删除文件
rm -rf XXX 直接删除文件夹

风险:
rm -rf / 跑路 高危命令
什么场景会发生 shell脚本:
K='/home/jepson'
K=''
脚本中要先判断 $K命令是否存在,才可以使用rm -rf
rm -rf $K/*

Linux 没有回收站的

用户 用户组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[hadoop@hadoop ~]$ ll /usr/sbin/user*
-rwxr-x---. 1 root root 118224 314 2019 /usr/sbin/useradd
-rwxr-x---. 1 root root 80400 314 2019 /usr/sbin/userdel
-rws--x--x. 1 root root 40312 610 2014 /usr/sbin/userhelper
-rwxr-x---. 1 root root 113856 314 2019 /usr/sbin/usermod
-rwsr-xr-x. 1 root root 11376 1031 2018 /usr/sbin/usernetctl
[hadoop@hadoop ~]$ ll /usr/sbin/group*
-rwxr-x---. 1 root root 65536 314 2019 /usr/sbin/groupadd
-rwxr-x---. 1 root root 57080 314 2019 /usr/sbin/groupdel
-rwxr-x---. 1 root root 57120 314 2019 /usr/sbin/groupmems
-rwxr-x---. 1 root root 76440 314 2019 /usr/sbin/groupmod

添加用户【要有权限】一般使用root用户操作
[root@hadoop ~]# useradd k
[root@hadoop ~]# id k
uid=1001(k) gid=1001(k) 组=1001(k)
[root@hadoop ~]#

创建一个普通用户,默认创建这个名称的用户组k,
且设置这个用户 主组为k,且创建/home/k

查看有哪些用户目录
[root@hadoop ~]# cd /home/
[root@hadoop home]# ll
总用量 4
drwx------. 16 hadoop hadoop 4096 1120 15:55 hadoop
drwx------. 2 k k 62 1120 16:25 k
所属用户 所属用户组

删除用户
[root@hadoop home]# userdel k
[root@hadoop home]# id k
id: k: no such user

因为k该组只有k用户,当这个用户删除时,组会校验就他自己,会自动删除,否则不会自动删除;但是home目录还在
[root@hadoop home]# ll
总用量 4
drwx------. 16 hadoop hadoop 4096 1120 15:55 hadoop
drwx------. 2 1001 1001 62 1120 16:25 k

重新创建k
[root@hadoop home]# useradd k
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[root@hadoop home]# id k
uid=1001(k) gid=1001(k) 组=1001(k)
[root@hadoop home]#


模拟切换用户丢失样式
[root@hadoop k]# ll -a
总用量 12
drwx------. 2 k k 62 1120 16:25 .
drwxr-xr-x. 4 root root 29 1120 16:25 ..
-rw-r--r--. 1 k k 18 1031 2018 .bash_logout
-rw-r--r--. 1 k k 193 1031 2018 .bash_profile
-rw-r--r--. 1 k k 231 1031 2018 .bashrc
[root@hadoop k]# rm -rf .bash*
[root@hadoop k]# su - k
-bash-4.2$
-bash-4.2$

修正样式
[root@hadoop k]# cp /etc/skel/.* /home/k/
cp: omitting directory ‘/etc/skel/.’
cp: omitting directory ‘/etc/skel/..’
[root@hadoop k]# ll -a
total 12
drwx------ 2 k k 59 Nov 16 21:32 .
drwxr-xr-x. 5 root root 44 Nov 16 21:16 ..
-rw-r--r-- 1 root root 18 Nov 16 21:32 .bash_logout
-rw-r--r-- 1 root root 193 Nov 16 21:32 .bash_profile
-rw-r--r-- 1 root root 231 Nov 16 21:32 .bashrc
[root@hadoop k]# chown k:k .bash*

[root@hadoop k]# ll -a
total 12
drwx------. 4 k k 91 1120 16:37 .
drwxr-xr-x. 4 root root 29 1120 16:25 ..
-rw-r--r--. 1 k k 18 1120 16:37 .bash_logout
-rw-r--r--. 1 k k 193 1120 16:37 .bash_profile
-rw-r--r--. 1 k k 231 1120 16:37 .bashrc
[root@hadoop k]#
[root@hadoop k]# su - k
上一次登录:三 1120 16:36:51 CST 2019pts/1
[k@hadoop ~]$

添加ruoze用户到另外一个组 bigdata
[root@hadoop k]# groupadd bigdata
[root@hadoop k]# cat /etc/group |grep bigdata
bigdata:x:1002:
[root@hadoop k]# usermod -a -G bigdata k
[root@hadoop k]# id k
uid=1001(k) gid=1001(k) 组=1001(k),1002(bigdata)
[root@hadoop k]#


修改bigdata为k的主组
[root@hadoop k]# usermod --gid bigdata k
[root@hadoop k]# id k
uid=1001(k) gid=1002(bigdata) 组=1002(bigdata)
[root@hadoop k]# usermod -a -G k k
[root@hadoop k]# id k
uid=1001(k) gid=1002(bigdata) 组=1002(bigdata),1001(k)

设置密码

1
2
3
4
5
6
[root@hadoop k]# passwd k
Changing password for user ruoze.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

切换用户

1
2
3
4
5
6
su ruoze
su - ruoze
代表切换该用户的家目录,且执行环境变量文件

.bash_profile文件 su ruoze不会执行,su - ruoze 都执行
.bashrc文件 su ruoze执行 ,su - ruoze 都执行

普通用户获取root的最大权限

1
2
3
4
[root@hadoop ~]vi /etc/sudoers
ruoze ALL=(root) NOPASSWD:ALL
之后使用root的权限时
[k@hadoop ~]$ sudo XXX